#define _CRT_SECURE_NO_WARNINGS 1


#include<vector>
#include<iostream>

using namespace std;

struct TreeNode 
{
    int val;
    TreeNode* left;
    TreeNode* right;

    TreeNode() 
        : val(0)
        , left(nullptr)
        , right(nullptr)
    {}
    TreeNode(int x) 
        : val(x)
        , left(nullptr)
        , right(nullptr) 
    {}
    TreeNode(int x, TreeNode* left, TreeNode* right) 
        : val(x)
        , left(left)
        , right(right) 
    {}
    
};

void InOrder(TreeNode* root, vector<int>& v)
{
    if (root == nullptr)
    {
        return;
    }
    InOrder(root->left, v);
    v.push_back(root->val);
    InOrder(root->right, v);
}

vector<int> inorderTraversal(TreeNode* root)
{
    vector<int> ret;
    InOrder(root, ret);
    return ret;
}